package han.sql;

import han.entity.*;

import java.util.Collection;
import java.util.List;

/**
 * @fileName: BaseOperator
 * @author: Han
 * @date: 2018/6/26 9:54
 * @dscription: TODO
 */
public abstract class BaseOperator {

    /**
     * 查询公司id
     *
     * @return id
     */
    abstract List<FinanceProjectIdEntity> queryProjectId(int startFlag, int length);

    /**
     * 获取投资机构id
     *
     * @return 投资机构id
     */
    abstract List<InvestCompanyIdEntity> queryCompanyId();

    /**
     * 插入融资项目id
     *
     * @param collection 融资项目id
     * @return 是否成功
     */
    abstract int insertProjectId(Collection<FinanceProjectIdEntity> collection);

    /**
     * 插入融资项目id(手机链接)
     *
     * @param collection 融资项目id
     * @return 是否成功
     */
    abstract int insertProjectIdM(Collection<FinanceProjectIdEntity> collection);

    /**
     * 插入公司id
     *
     * @param collection 投资公司id
     * @return 是否成功
     */
    abstract int insertCompanyId(Collection<InvestCompanyIdEntity> collection);

    /**
     * 插入投资机构信息
     *
     * @param collection 信息
     * @return 插入状况
     */
    abstract int insertCompanyInfo(Collection<InvestCompanyInfoEntity> collection);

    /**
     * 移除公司id
     *
     * @param list 公司id
     * @return 是否成功
     */
    abstract int removeProjectIdById(List<FinanceProjectIdEntity> list);

    /**
     * 更新公司信息
     *
     * @param list 信息
     * @return 更新情况
     */
    abstract int insertProjectInfo(Collection<FinanceProjectInfoEntity> list);

    /**
     * 更新公司id信息
     *
     * @param list 信息
     * @return 更新情况
     */
    abstract int updateCompanyId(List<FinanceProjectIdEntity> list);

    /**
     * 查询所有公司信息
     *
     * @return 公司信息
     */
    abstract List<FinanceProjectInfoEntity> queryAllProjectInfo();

    abstract List<InvestCompanyInfoEntity> queryAllCompanyInfo();

    abstract void updateCompanyInfo(InvestCompanyInfoEntity entity);

    /**
     * 根据id查询融资信息
     *
     * @param id 公司id
     * @return 融资信息
     */
    abstract List<FinanceProjectFinanceEntity> queryFinanceById(String id);

    /**
     * 根据id查询成员信息
     *
     * @param id 公司id
     * @return 成员信息
     */
    abstract List<FinanceProjectMemberEntity> queryMemberById(String id);

    /**
     * 根据id查询新闻信息
     *
     * @param id 公司ID
     * @return 新闻信息
     */
    abstract List<FinanceProjectNewsEntity> queryNewsById(String id);

    abstract void updateProjectBasicInfo(FinanceProjectBaseInfoEntity entity);

    abstract void updateFinanceInfo(Collection<FinanceProjectFinanceEntity> list);
}
